package com.newmainsoftech.dao.entity.relation;

import java.lang.reflect.Method;


public interface BiLinkDequeueProxy<R extends HolderSide<E>, E extends HoldeeSide<R>> 
extends BiLinkQueueProxy<R, E> {
	/**
	 * To handle invocation of <code>descendingIterator()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interDescendingIterator( Object proxy, Method method);
	/**
	 * To handle invocation of <code>pollFirst()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interPollFirst( Object proxy, Method method);
	/**
	 * To handle invocation of <code>pollLast()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interPollLast( Object proxy, Method method);
	/**
	 * To handle invocation of <code>pop()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interPop( Object proxy, Method method);
	/**
	 * To handle invocation of <code>remove()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interRemove( Object proxy, Method method);
	/**
	 * To handle invocation of <code>removeFirst()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interRemoveFirst( Object proxy, Method method);
	/**
	 * To handle invocation of <code>removeLast()</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interRemoveLast( Object proxy, Method method);
	
	/**
	 * To handle invocation of <code>addFirst(E e)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interAddFirst( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>addLast(E e)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interAddLast( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>offerFirst( E e)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interOfferFirst( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>offerLast( E e)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interOfferLast( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>push( E e)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interPush( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>removeFirstOccurrence(Object o)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interRemoveFirstOccurrence( Object proxy, Method method, E holdee);
	/**
	 * To handle invocation of <code>removeLastOccurrence(Object o)</code> method of 
	 * <code>Dequeue</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interRemoveLastOccurrence( Object proxy, Method method, E holdee);
}
